package com.ruanxie.json.jsonconverter;

import com.alibaba.fastjson.annotation.JSONField;
import com.ruanxie.json.deserializer.BooleanDeserializer;
import com.ruanxie.json.deserializer.CourseTypeDeserializer;
import com.ruanxie.json.deserializer.IntegerZeroDeserializer;
import lombok.Data;

/**
 * 完整的教学执行计划的查询（包含记录：课程表和教学计划课程信息表）
 */
@Data
public class HuebTeachingPlanCourseInfoJsonConverter {
    //课程的一些属性
    @JSONField(name = "kch")
    private String courseId;

    @JSONField(name = "kcmc")
    private String courseName;

    @JSONField(name = "xf")
    private Float credit;

    @JSONField(name = "kcxzmc")
    private String courseNature;

    //TODO 这里还没还有测试
    @JSONField(name = "xdlxm",deserializeUsing = CourseTypeDeserializer.class)
    private String courseType;

    @JSONField(name = "kclbmc")
    private String courseCategoryName;

    @JSONField(name = "kcgsmc")//这个字段还需要额外从课表中获取
    private String courseOwnershipName;

    //TODO 失败：如果不存在这个字段，设置为0，用反序列器失败了
    // 这里用的int，因为这个默认值为0
    @JSONField(name = "xsdm_01")//,deserializeUsing = IntegerZeroDeserializer.class)
    private int totalTheoryHours;

    @JSONField(name = "xsdm_02")//,deserializeUsing = IntegerZeroDeserializer.class)
    private int totalLabHours;

    @JSONField(name="xsdm_04")//,deserializeUsing = IntegerZeroDeserializer.class)
    private int totalPracticeHours;


    //下面这些是教学执行计划-课程信息的内容
    @JSONField(name = "jxzxjhkcxx_id")
    private String teachingPlanCourseInfoId; // 教学执行计划课程信息ID

    @JSONField(name = "jxzxjhxx_id")
    private String teachingPlanInfoId;       // 教学执行计划信息ID

    @JSONField(name = "jyxdxnm")
    private String suggestedYear;            // 建议修读学年

    @JSONField(name = "jyxdxqm")//,deserializeUsing = CharDeserializer.class)//这里失败了，不知道为啥，返回的是方框加斜杠
    private String suggestedTerm;              // 建议修读学期，这里使用char类型，因为数据库中定义为CHAR(1)

    @JSONField(name = "zyzgkcbj",deserializeUsing = BooleanDeserializer.class)//还需要反序列化
    private boolean coreCourseFlag;          // 专业核心课标记
        //对应的是是否为学位课程

}
